@file:JsQualifier("languages")
@file:JsModule("vscode")
@file:JsNonModule
@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
package vscode.languages


import Thenable
import vscode.*

external fun getLanguages(): Thenable<Array<String>>

external fun setTextDocumentLanguage(document: TextDocument, languageId: String): Thenable<TextDocument>

external fun match(selector: dynamic/*DocumentSelector*/, document: TextDocument): Number

external var onDidChangeDiagnostics: Event<DiagnosticChangeEvent>

external fun getDiagnostics(resource: Uri): Array<Diagnostic>

external fun getDiagnostics(): Array<dynamic /* JsTuple<Uri, Array<Diagnostic>> */>

external fun createDiagnosticCollection(name: String = definedExternally): DiagnosticCollection

external fun createLanguageStatusItem(id: String, selector: dynamic/*DocumentSelector*/): LanguageStatusItem

external fun registerCompletionItemProvider(selector: dynamic/*DocumentSelector*/, provider: CompletionItemProvider<CompletionItem>, vararg triggerCharacters: String): Disposable

external fun registerInlineCompletionItemProvider(selector: dynamic/*DocumentSelector*/, provider: InlineCompletionItemProvider): Disposable

external fun registerCodeActionsProvider(selector: dynamic/*DocumentSelector*/, provider: CodeActionProvider<CodeAction>, metadata: CodeActionProviderMetadata = definedExternally): Disposable

external fun registerCodeLensProvider(selector: dynamic/*DocumentSelector*/, provider: CodeLensProvider<CodeLens>): Disposable

external fun registerDefinitionProvider(selector: dynamic/*DocumentSelector*/, provider: DefinitionProvider): Disposable

external fun registerImplementationProvider(selector: dynamic/*DocumentSelector*/, provider: ImplementationProvider): Disposable

external fun registerTypeDefinitionProvider(selector: dynamic/*DocumentSelector*/, provider: TypeDefinitionProvider): Disposable

external fun registerDeclarationProvider(selector: dynamic/*DocumentSelector*/, provider: DeclarationProvider): Disposable

external fun registerHoverProvider(selector: dynamic/*DocumentSelector*/, provider: HoverProvider): Disposable

external fun registerEvaluatableExpressionProvider(selector: dynamic/*DocumentSelector*/, provider: EvaluatableExpressionProvider): Disposable

external fun registerInlineValuesProvider(selector: dynamic/*DocumentSelector*/, provider: InlineValuesProvider): Disposable

external fun registerDocumentHighlightProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentHighlightProvider): Disposable

external fun registerDocumentSymbolProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentSymbolProvider, metaData: DocumentSymbolProviderMetadata = definedExternally): Disposable

external fun registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider<SymbolInformation>): Disposable

external fun registerReferenceProvider(selector: dynamic/*DocumentSelector*/, provider: ReferenceProvider): Disposable

external fun registerRenameProvider(selector: dynamic/*DocumentSelector*/, provider: RenameProvider): Disposable

external fun registerDocumentSemanticTokensProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentSemanticTokensProvider, legend: SemanticTokensLegend): Disposable

external fun registerDocumentRangeSemanticTokensProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentRangeSemanticTokensProvider, legend: SemanticTokensLegend): Disposable

external fun registerDocumentFormattingEditProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentFormattingEditProvider): Disposable

external fun registerDocumentRangeFormattingEditProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentRangeFormattingEditProvider): Disposable

external fun registerOnTypeFormattingEditProvider(selector: dynamic/*DocumentSelector*/, provider: OnTypeFormattingEditProvider, firstTriggerCharacter: String, vararg moreTriggerCharacter: String): Disposable

external fun registerSignatureHelpProvider(selector: dynamic/*DocumentSelector*/, provider: SignatureHelpProvider, vararg triggerCharacters: String): Disposable

external fun registerSignatureHelpProvider(selector: dynamic/*DocumentSelector*/, provider: SignatureHelpProvider, metadata: SignatureHelpProviderMetadata): Disposable

external fun registerDocumentLinkProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentLinkProvider<DocumentLink>): Disposable

external fun registerColorProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentColorProvider): Disposable

external fun registerInlayHintsProvider(selector: dynamic/*DocumentSelector*/, provider: InlayHintsProvider<InlayHint>): Disposable

external fun registerFoldingRangeProvider(selector: dynamic/*DocumentSelector*/, provider: FoldingRangeProvider): Disposable

external fun registerSelectionRangeProvider(selector: dynamic/*DocumentSelector*/, provider: SelectionRangeProvider): Disposable

external fun registerCallHierarchyProvider(selector: dynamic/*DocumentSelector*/, provider: CallHierarchyProvider): Disposable

external fun registerTypeHierarchyProvider(selector: dynamic/*DocumentSelector*/, provider: TypeHierarchyProvider): Disposable

external fun registerLinkedEditingRangeProvider(selector: dynamic/*DocumentSelector*/, provider: LinkedEditingRangeProvider): Disposable

external fun registerDocumentDropEditProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentDropEditProvider<DocumentDropEdit>, metadata: DocumentDropEditProviderMetadata = definedExternally): Disposable

external fun registerDocumentPasteEditProvider(selector: dynamic/*DocumentSelector*/, provider: DocumentPasteEditProvider<DocumentPasteEdit>, metadata: DocumentPasteProviderMetadata): Disposable

external fun setLanguageConfiguration(language: String, configuration: LanguageConfiguration): Disposable